package com.tanovo.service;

import com.tanovo.bo.MenuQueryBo;
import com.tanovo.bo.ResourceCheckBo;
import com.tanovo.domain.Resources;
import com.tanovo.domain.Role;

import java.util.List;

public interface IResourcesService {
    /**
     * 获取角色资源列表
     * @param role
     * @return
     */
    List<Resources> getListByRole(Role role);

    void addResource(Resources resource);

    void delete(Integer resourceId);

    void editResource(Resources resource);


    Resources getDetail(Integer resourceId);


    /**
     * 父id获取子资源list
     * @param parentId
     * @return
     */
    List<Resources> getResourceByParentId(Integer parentId,String clientId,Integer userId);

    /**
     * 当前登录用户拥有的权限
     * @param userId
     * @return
     */
    List<Resources> getCurrentUserList(Integer userId);

    /**
     * 获取角色对应的资源 包含是否选中
     * @param parentId
     * @param roleId
     * @return
     */
    List<Resources> getCheckedList(Integer parentId, Integer roleId,String clientId,Integer userId);

    /**
     * 系统级别 不是登录用户的菜单
     *通过父节点获取子菜单列表
     * @param parentId
     * @return
     */
    List<Resources> getCurrentSystemMenuList(Integer parentId);



    /**
     * 获取当前登录用户的菜单树列表
     * @return
     */
    List<Resources> getCurrentUserMenuList(MenuQueryBo queryBo);

    /**
     * 批量删除
     *
     * @param resourceIdList
     */
    void deleteList(List<Integer> resourceIdList);


    /**
     * 检查此路径在当前用户是否存在权限
     * @param uri
     */
    ResourceCheckBo  checkPath(String uri);

    /**
     * 初始化使用 其他不可用
     * @param clientId
     * @param companyId
     * @return
     */
    List<Resources> getResourceByCompanyIdAndClientId(String clientId, Integer companyId);

    /**
     * 给应用管理员赋值权限
     * @param admin
     */
    void giveAdminResources(Role admin);

    /**
     * 模板角色 资源列表
     * @return
     */
    List<Resources> getAppAdminResources();

    /**
     * 应用管理员资源列表
     * @return
     */
    List<Resources> adminResourceList();

    /**
     * 获取应用的资源列表
     * @param parentId
     * @param clientId
     * @param userId
     * @return
     */
    List<Resources> getAppResourceByParentId(int parentId, String clientId, Integer userId);
}
